# 使用切片操作将列表分成子列表
"""
a = [1, 2, 3, 4]
print(a[1:3])
"""
# 1、切片操作中，[a : b]里面的两个数字，表示了一段区间
# 取到 下标为 a 一直到 下标为 b 的元素
# 其中取到的元素包含下标为 a 的元素，不包含下标为 b 的元素

# 2、使用切片操作时，可以省略边界，
"""
a = [1, 2, 3, 4]
# 省略后边界，意思是从开始位置，一直取到整个列表结束，比如：
print(a[1:])
# 省略前边界，意思是从列表的 0 号元素开始取，一直取到结束的后边界，比如：
print(a[:2])

# 3、切片中的下标也可以写成负数，比如
print(a[:-1])  # 打印的是从 0 号元素开始，
# 一直打印到倒数第一个元素，但不打印倒数第一个元素
"""

# 切片操作是一个比较高效的操作，只是取出了原有列表的一部分
# 并不涉及到数据的拷贝，即使列表的长度很大，切片的范围也很大
# 切片操作仍然很高效，

# 3、切片操作还可以指定步长，步长只针对下标访问，和列表中的类型无关
# 4、步长的取值可以是负数，此时[a:b:-x]
# [a:b:-x] 先取出下标为 a 的元素，再取出下标为 a - x 的元素
# 此时下标为 b 的元素是不取的

a = [1.5, 2.5, 3.2, 4.2, 5.1, 6.3, 7.4, 8.5, 9.0]
print(a[::2])
print(a[-1:2:-3])

# 5、当切片中的范围超出有效下标时，不会出现异常，
#    而是尽可能的把符合要求的元素给获取到，比如：
a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
print(a[:100])

# 切片操作的对象可以是字符串，列表，元组，比如：
zifu = 'abcdef'
print(zifu[1:3:1])
